Business process models play an important role in facilitating the understanding of how companies operate and in providing a blueprint for software systems supporting these processes. The automation of a business process, during which documents, information, or tasks are passed from one participant to another for action according to a set of procedural rules, may be termed a workflow. A workflow may be expressed by a workflow model (also referred to as a process model). Workflow models may be generated using a graphical process modeling language. Typically, graphical process modeling languages allow for expressing control-flows, or ordering dependencies among tasks, in a process. Executing a process based on a workflow model and specific input data may be referred to as executing an instance of a workflow. When an instance of a workflow has completed executing or is cancelled, another instance of the workflow may be started, e.g., with new input data.
In large organizations, many tasks, such as those related to expenses, need to be approved before they are performed. For instance, a purchase order may need to be approved by several roles, depending on the value and the type of the items listed in the purchase order, and on the ordering agent's position in the organization's hierarchy. A purchase approval process may be expressed by a workflow model (e.g., titled a purchase workflow model). A computerized purchase approval process based on the purchase workflow model may be termed a purchase approval workflow. Each time a new purchase order needs to be processed, a new instance of the purchase approval workflow may be started.
As a purchase approval process may be more or less complex, the nature of business may require changes to a purchase order before an instance of the purchase approval workflow has completed execution. Currently it is not a common practice to enable changes to application data during workflow execution. The typical solution offered in such cases is to cancel the instance of the workflow and execute a new instance with the updated data.